class Solution {
public:
    long long maxStrength(vector<int>& nums)
    {
        if (nums.size() == 1) return nums[0];
        ranges::sort(nums);
        long long ans = 1;
        bool flag = false;
        for (int i = 0; i < nums.size(); i++)
        {
            if ((nums[i] < 0 && (i + 1 == nums.size() || (i + 1 < nums.size() && nums[i + 1] >= 0))) || nums[i] == 0) continue;
            else if (nums[i] < 0 && (i + 1 < nums.size() && nums[i + 1] < 0))
            {
                ans *= nums[i] * nums[i + 1];
                i++;
                flag = true;
            }
            else
            {
                ans *= nums[i];
                flag = true;
            }
        }
        if (flag == false && ans == 1) return 0;
        return ans;
    }
};